package clases.incio;

import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JTabbedPane;
import javax.swing.JTable;

public class Ventana {

    private JTabbedPane ppanel;
    private JTable tabla;

    public Ventana(JTabbedPane panel) {
        this.ppanel = panel;

    }

    /**
     * Metodo que agrega una nueva ventana al contenedor principal
     *
     * @param frm nombre del formulario a agregar
     * @param nombre String con el titulo de la ventana
     */
    public void agregarPestana(javax.swing.JInternalFrame frm, String nombre) {
        int n = ppanel.getTabCount();
        String t;
        for (int i = 0; i < n; i++) {
            t = ppanel.getTitleAt(i);

            if (t.equals(nombre)) {
                ppanel.setSelectedIndex(i);
                return;
            }
        }
        ppanel.addTab(nombre, frm);
        ppanel.setSelectedIndex(n);
    }

    public void agregarPestanaTabla(javax.swing.JInternalFrame frm, String nombre, JTable tbl) {
        tabla = new JTable();
        tabla = tbl;
        int n = ppanel.getTabCount();
        String t;
        for (int i = 0; i < n; i++) {
            t = ppanel.getTitleAt(i);

            if (t.equals(nombre)) {
                ppanel.setSelectedIndex(i);
                return;
            }
        }
        ppanel.addTab(nombre, frm);
        ppanel.setSelectedIndex(n);
    }

    public void ultima(JButton btn) {
        if (contarPestana() == false) {
            return;
        }
        int n = ppanel.getTabCount();
        for (int i = 0; i < n; i++) {
            ppanel.setSelectedIndex(i);

        }

    }

    public void avanzar(JButton btn) {
        if (contarPestana() == false) {
            return;
        }

        int n = ppanel.getTabCount();
        int ac = ppanel.getSelectedIndex();
        if (ac + 1 == n) {
            ppanel.setSelectedIndex(ac);
        } else if (ac + 1 < n) {
            ppanel.setSelectedIndex(ac + 1);

        }

    }

    public void atras(JButton btn) {
        if (contarPestana() == false) {
            return;
        }
        int n = ppanel.getTabCount();

        int ac = ppanel.getSelectedIndex();
        if (ac >= 1) {
            ppanel.setSelectedIndex(ac - 1);
            btn.setEnabled(true);
        } else {
            if (n >= 0) {
                ppanel.setSelectedIndex(0);
            }
            btn.setEnabled(true);
        }
    }

    public String getPestanaActual() {
        pintarpestanaactual();
        return ppanel.getTitleAt(ppanel.getSelectedIndex());

    }

    public void cerrarPestana() {
        if (contarPestana() == false) {
            return;
        }
        ppanel.remove(ppanel.getSelectedIndex());
    }

    private boolean contarPestana() {
        if (ppanel.getTabCount() != 0) {
            return true;
        } else {
            return false;
        }
    }

    public void pintarpestanaactual() {
        int n = ppanel.getTabCount();
        for (int i = 0; i < n; i++) {
            if (ppanel.getSelectedIndex() == i) {
                ppanel.setBackgroundAt(ppanel.getSelectedIndex(), Color.CYAN);
            } else {
                ppanel.setBackgroundAt(i, Color.BLACK);
            }
        }
    }

    public boolean ExistenciaPestana(String nombrePestana) {
        int n = ppanel.getTabCount();
        boolean estado = false;
        for (int i = 0; i < n; i++) {
            if (nombrePestana.equals(ppanel.getTitleAt(i))) {
                estado = true;
            }
        }
        return estado;

    }

    public void siguienteRegistro(JTable tabla) {
        if (tabla.getRowCount() != tabla.getSelectedRow() + 1) {
            tabla.getSelectionModel().setSelectionInterval(tabla.getSelectedRow() + 1, tabla.getSelectedRow() + 1);
        } else {
            tabla.getSelectionModel().setSelectionInterval(tabla.getRowCount() - 1, tabla.getRowCount() - 1);
        }
    }

    public void anteriorRegistro(JTable tabla) {
        if (tabla.getSelectedRow() != 0) {
            tabla.getSelectionModel().setSelectionInterval(tabla.getSelectedRow() - 1, tabla.getSelectedRow() - 1);
        } else {
            tabla.getSelectionModel().setSelectionInterval(0, 0);
        }
    }

    public void primerRegistro(JTable tabla) {
        tabla.getSelectionModel().setSelectionInterval(0, 0);
    }

    public void ultimoRegistro(JTable tabla) {
        tabla.getSelectionModel().setSelectionInterval(tabla.getRowCount() - 1, tabla.getRowCount() - 1);
    }
}
